/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package verins.DAO;


import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.DecimalFormat;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.JOptionPane;
import verins.Utils.Conexion;
import verins.beans.Padronelectoral;

/**
 *
 * @author hectdx
 */
public class PadronElectoralDAO {
 
      public boolean save(Padronelectoral  padron){
      boolean rOK=false;
      //Etapaprocesoempadronamiento etapaxproceso=null;
      try{
        // Create the EntityManager
          EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
          EntityManager em = emf.createEntityManager();
          em.getTransaction().begin();
          em.merge(padron);
          em.getTransaction().commit();
          em.close();
          emf.close();
          rOK = true;
         
         return rOK;
         
      }catch(Exception ex){
          JOptionPane.showMessageDialog(null, "Error al grabar datos"+ex.getMessage());
          return false;
      } 
    }
    

    
     public Padronelectoral finByCodigo(String id){
        Padronelectoral padron=null;
        try{
            
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();
            padron = em.find(Padronelectoral.class, id);
            em.close();    
            emf.close();
        }catch(Exception ex){
                System.out.println(ex.getMessage());
        }
        return padron;
    }
     
     public  List<Padronelectoral> findByCriterios(Padronelectoral padron){
       List<Padronelectoral> lista=null;
       try{
          
           String sSql="SELECT p FROM Padronelectoral p WHERE 1=1  ";
                    if (padron.getIdpadronelectoral().trim().length()>0)
                    sSql+= "and  p.idpadronelectoral  = ?1  ";
                    if (padron.getIdpartidopolitico().getIdpartidopolitico()>0)
                    sSql+= "and  p.idpartidopolitico.idpartidopolitico = ?2   ";
                    if (padron.getEstado().getIdestadopadron()>0)
                    sSql+= "and  p.estado.idestadopadron = ?3   ";
                    
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();
            
            Query query=em.createQuery(sSql) ;
            if (padron.getIdpadronelectoral().trim().length()>0)
            query.setParameter(1,padron.getIdpadronelectoral());
            if (padron.getIdpartidopolitico().getIdpartidopolitico()>0)
            query.setParameter(2, padron.getIdpartidopolitico().getIdpartidopolitico());
            if (padron.getEstado().getIdestadopadron()>0)
            query.setParameter(3, padron.getEstado().getIdestadopadron());
           
                    
            lista=query.getResultList();
            em.close();    
            emf.close();
            
            return lista;
            
        }catch(Exception ex){
            System.out.println(ex.getMessage());
        }        
        
        return lista;
    
    }

    public  List<Padronelectoral> findByProcesoElectoral(int idProcesoElectoral, int idEstadoPadron){
        List<Padronelectoral> lista=null;
       try{

            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();

            Query query = em.createNamedQuery("Padronelectoral.findByIdprocesoelectoral");
            query.setParameter(1, idProcesoElectoral);
            query.setParameter(2, idEstadoPadron);
            lista=query.getResultList();
            em.close();
            emf.close();

            return lista;

        }catch(Exception ex){
            System.out.println(ex.getMessage());
        }

        return lista;
    }
     public  String getNuevoCodigo(){
       String cod="";
       PreparedStatement pstmt=null;
       ResultSet rset=null;
       DecimalFormat df = new DecimalFormat("P00000");
       try{
          
           String sSql=" select nextval('verinscribe.padronelectoral_id_seq'::text)";
                  
           Conexion con=new Conexion();
           pstmt=con.getConexion().prepareStatement(sSql);
           rset=pstmt.executeQuery();
           
           if(rset.next()){
              cod=rset.getString(1);
              cod=df.format(Integer.parseInt(cod));
           }
           
        }catch(Exception ex){
            System.out.println(ex.getMessage());
        }  
       
         return cod;
     }
        
        
}

